MyUserDetailsService.java returns User Object with Username, Password and Authorities (from entered Username).
For instance you can use entered Username to get Account from DB and use it to create User Object.
Spring will compare entered Password with Password that you place inside returned User Object.
Returned User Object must Implement UserDetails Interface so you can use either
● built-in User Object or
● your Custom Object that Implements UserDetails Interface
Following tutorials show this
● Manually Create User Object
● Define Users in DB
MyUserDetailsService.java (from Manually Create User Object)
@Service
public class MyUserDetailsService implements UserDetailsService {
@Override
public UserDetails loadUserByUsername(String enteredUsername) throws UsernameNotFoundException {
//HARD CODED USER
String username = "myuser";
String password = "mypassword";
String role = "ROLE_USER";
//CHECK USERNAME
if (!username.equals(enteredUsername)) {
throw new UsernameNotFoundException(enteredUsername);
}
//CREATE AUTHORITIES
List<GrantedAuthority> authorities = new ArrayList<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority(role));
//CREATE USER OBJECT
User user = new User(username, password, authorities);
//RETURN USER
return user;
}
}